package inventario.DAO;


/**
 * Projeto Laboratorio de Programacao II
 * 
 * Classe Leitor de Maquinas
 * 
 * Le um arquivo que contem as especificacoes da maquina.
 * 
 * @authors Pedro Augusto, Rafael Ribeiro, Talita Lobo
 */

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import inventario.code.Maquina;

public class LeitorDeMaquinas {

	private File arq;
	private Scanner arquivo;
	private ArrayList<Maquina> maquinascadastradas;
	private String[] chavevalor;
	
	/**
	 * 
	 * @param endereco Endereco do arquivo no computador
	 * @throws Exception
	 */
	public LeitorDeMaquinas(String endereco)throws Exception{
		
		if(endereco == null || endereco.replaceAll(" ", "").equals("")){
			throw new Exception("O Endereco nao pode ser nulo. ");
		} 
		
		arq = new File(endereco); 
		
		if(!(arq.exists())){
			throw new Exception("O Caminho de Arquivo Informado nao eh Valido. ");
		}
		
		
		arquivo = new Scanner(arq); 
		maquinascadastradas = new ArrayList<Maquina>();
		
	}
	public ArrayList<Maquina> getMaquinasCadastradas(){
		return this.maquinascadastradas;
	}
	
	
	/**
	 * Metodo que le o arquivo especificado
	 * @throws Exception
	 */
	public void lerArquivo() throws Exception{
		
		 while(arquivo.hasNext()){
			 
			 int num = 0;
			 Maquina maquina;
			 
			Map <String, String> mapa = new HashMap< String, String>();
			 
			 
			 while(num < 2){ 
				 
				 String linha = arquivo.nextLine();
				 String[] atributos = linha.split(",");
				 String nome = "";
				 
				 for(int a = 0; a < atributos.length; a++){
					chavevalor = atributos[a].split(":");
					if(a == 0){
						nome = chavevalor[1];
						continue;
					}
					maquina = new Maquina(nome,mapa,false);
					mapa.put(chavevalor[0].toLowerCase().trim()+ " :", chavevalor[1]);
					maquinascadastradas.add(maquina);
					 num++;
				 }
			
			 }
		 
		 fechaArquivo();
		 }
	}
	
	/**
	 * Fecha o arquivo especificado
	 */
	 public void fechaArquivo(){
		 arquivo.close();
	 }
	 
}

